import { defineStore } from "pinia";
import { USER_INFO } from "@/config/cache";
import Cache from "@/utils/cache";
export const useUserInfoStore = defineStore(
  USER_INFO,
  () => {
    // 用户信息
    const userInfo = ref("");
    function setUserInfo(str: string) {
      userInfo.value = str;
    }

    // 清除用户信息
    function clearUserInfo() {
      userInfo.value = "";
    }

    return {
      userInfo,
      setUserInfo,
      clearUserInfo,
    };
  },
  {
    persist: {
      storage: {
        setItem(key, value) {
          Cache.set(key, value);
        },
        getItem(key) {
          return Cache.get(key);
        },
      },
      serializer: {
        serialize: (value) => {
          // 只存储 userInfo 的值，而不是整个对象
          return JSON.stringify(value.userInfo);
        },
        deserialize: (value) => {
          // 从存储中读取时，构造成正确的对象格式
          try {
            const userInfoValue = JSON.parse(value);
            return { userInfo: userInfoValue };
          } catch (error) {
            // 如果解析失败，返回默认值
            return { userInfo: {} };
          }
        },
      },
    },
  }
);
